package com.winit.schedule.task.tracker;

import java.util.Set;

import com.winit.schedule.core.event.Dispatcher;
import com.winit.schedule.core.task.ScheduleTaskDefine;
import com.winit.schedule.task.tracker.monitor.ExpireTaskRunnerMonitor;
import com.winit.schedule.task.tracker.monitor.HeartbeatMonitor;
import com.winit.schedule.task.tracker.monitor.ZKServiceMonitor;
import com.winit.schedule.task.tracker.remoting.RemotingClientService;
import com.winit.schedule.task.tracker.service.RPCRetryService;

/**
 * task tracker 上下文
 * 
 * @author jianke.zhang 2015-3-12 下午6:01:53
 * @since 1.0
 */
public interface TaskTrackerContext {

    Dispatcher getDispatcher();

    TaskTracker getTaskTracker();

    RemotingClientService getRemotingClientService();

    HeartbeatMonitor getHeartbeatMonitor();

    Set<ScheduleTaskDefine> getTaskDefines();

    ExpireTaskRunnerMonitor getExpireTaskRunnerMonitor();

    ZKServiceMonitor getZkServiceMonitor();

    RPCRetryService getRpcRetryService();

}
